package com.fuchuang.seckillsystem.service;

import com.fuchuang.seckillsystem.dto.OrderInfo;
import com.fuchuang.seckillsystem.dto.OrderQuery;
import com.fuchuang.seckillsystem.vo.SeckillMessage;

import java.util.Map;

public interface IOrderService {
    
    /**
     * 通过消息队列中的消息生成订单
     *
     * @param seckillMessage 队列消息
     */
    void createSeckillOrder(SeckillMessage seckillMessage);
    
    /**
     * 获取秒杀成功的order
     *
     * @param orderId 订单id
     * @return 订单信息
     */
    OrderInfo getOrderDetail(Integer orderId);
    
    /**
     * 查询用户所有的订单
     *
     * @param orderQuery 订单查询条件
     * @return 满足状态的订单
     */
    Map<String, Object> getUserOrderInfo(OrderQuery orderQuery);
    
    /**
     * 订单过期处理
     *
     * @param orderId 订单id
     */
    void orderExpire(Integer orderId);
    
    /**
     * 支付
     *
     * @param orderId 订单id
     */
    void pay(Integer orderId, Integer userId);
    
    /**
     * 取消订单
     *
     * @param orderId 订单id
     */
    void cancelOrder(Integer orderId, Integer userId);
    
    /**
     * 获取所有的订单信息
     *
     * @param orderQuery 查询条件
     * @return 符合查询条件的订单信息
     */
    Map<String, Object> getAllOrderInfo(OrderQuery orderQuery);
}
